import router from '@/rotuer'
import axios from 'axios'
import { Message } from 'element-ui'

// 创建axios实例
const instance = axios.create({
    timeout: 5000, // 请求超时时间
    baseURL: 'http://xue.cnkdl.cn:23683' // 如果有基础url，可以在这里进行设置
})


const withoutTokenUrls = ['/prod-api/captchaImage', '/prod-api/login']

// 请求拦截器
instance.interceptors.request.use(
    config => {
        // 统一请求的token
        let token = localStorage.getItem('token')
        if (token && !withoutTokenUrls.includes(config.url)) {
            config.headers['Authorization'] = token;
        }
        // 在发送请求之前可以进行一些处理，比如添加token等
        return config
    },
    error => {
        // 对请求错误做些什么，比如请求超时等
        console.log(error)
        return Promise.reject(error)
    }
)

// 响应拦截器
instance.interceptors.response.use(
    // 请求成功
    response => {
        // 但是业务可能会失败
        if (response.data.code !== 200) {
            // 提示用户
            Message.error(response.data.msg);

            // 如果token 过期
            // 如果 code 是 401 && 是认证失败
            if (response.data.code === 401 && response.data.msg.includes('认证失败')) {
                // 清token
                localStorage.removeItem('token')
                // 清vuex
                // 需要把对应的vuex里面的数据一个一个清除
                // 跳转到 登录
                router.push('/login')
            }
        }
        // 对响应数据做些什么，比如判断状态码等
        return response.data
    },
    // 请求失败才会进这
    error => {
        // 对响应错误做些什么，比如请求超时等
        // console.log(error)
        return Promise.reject(error)
    }
)

export default instance
